1. Place a file with name credentials.properties Under <script_root> :
app.url=http://example.com app.user=myuser app.password=secret
2. Create an Accessor class in <script_root>/mycompany/MyCompanyProperties.groovy:
package mycompany
import com.onresolve.scriptrunner.runner.ScriptRunner
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import java.nio.file.Files
import java.io.File
import groovy.util.logging.Log4j
@Singleton
@Log4j
public class MyCompanyProperties {
final String configFileName = 'credentials.properties'
public Properties getProperties() {
def scriptRoots = ScriptRunnerImpl.getPluginComponent(ScriptRunner).getRootsForDisplay()?.split(", ")?.toList()
//def scriptRoots = ['a', 'b']
File propertiesFile = null
for (root in scriptRoots) {
propertiesFile = new File("$root/$configFileName")
if (Files.isReadable(propertiesFile.toPath())) {
log.info "Found ${propertiesFile.toPath()}"
break
}
}
// TODO: what if propertiesFile == null?
Properties properties = new Properties()
propertiesFile.withInputStream {
properties.load(it)
}
properties
}
}
3. Use that class each time to access any configuration data in my scripts:
import mycompany.MyCompanyProperties ... def props = MyCompanyProperties.instance.properties def user = props['app.user']; def password = props['app.password']; def url = props['app.url']; ...
Font: Arnold Müller/Atlassian Community
MrAddon
.





